import 'package:flutter/material.dart';

import '../model/category.dart';

//数据提供者，把递增相加的和状态管理分到这里.ChangeNotifier意思是可以不用管理听众。现在你可以看到数和操作数据的方法都在Provide中，很清晰的把业务分离出来了
//写完后要把该方法放到APP的顶层：main.dart
//ChangeNotifier的混入是不用管理听众
class ChildCategory with ChangeNotifier {
  List<BxMallSubDto> childCategoryList = [];
  int childIndex = 0; //子类高亮索引
  String categoryId = '4'; //大类id，默认是4（白酒）
  String subId = ''; //小类id 状态化（Provide）
  int page = 1; //列表页数，当改变大类或者小类时进行改变
  String noMoreText = ''; //显示更多的标识
  //大类切换逻辑
  getChildCategory(List<BxMallSubDto> list, String id) {
    //在二级分类上是有“全部”字样的，但我们作的这里并没有。其实加上这个全部也非常简单，
    // 只要我们在状态管理，改变状态的方法getChildCategory里，现加入一个全部的BxMallSubDto对象就可以了。
    //声明一个all对象，然后进行赋值，复制后组成List赋给childCategoryList。然后把list添加到childCategoryList里

    childIndex = 0;
    categoryId = id;

    page = 1;
    noMoreText = '';

    BxMallSubDto all = BxMallSubDto();
    all.mallSubId = ''; //切换到全部时要显示全部
//    all.mallSubId = '00';
    all.mallCategoryId = '00';
    all.comments = 'null';
    all.mallSubName = '全部';
    childCategoryList = [all];
    childCategoryList.addAll(list);
    notifyListeners();
  }

  //改变子类索引
  changeChildIndex(index, String id) {
    page = 1;
    noMoreText = '';
    childIndex = index;
    subId = id;
    notifyListeners();
  }

  //增加page的方法
  addPage() {
    page++;
  }

  //noMore的方法
  changeNoMore(String text) {
    noMoreText = text;
    notifyListeners();
  }
}
